1292B - Aroma's Search - CodeForces Solution


brute force constructive algorithms geometry greedy implementation *1700

Please click on ads to support us..

Python Code:

x0, y0, ax, ay, bx, by = map(int, input().split())
x, y, t = map(int, input().split())
xaxis = [];yaxis = [];dis = 3*(10 ** 16);
xaxis.append(x0)
yaxis.append(y0)
lim=120;ans=0
for i in range(0, lim):
    xaxis.append(xaxis[i] * ax + bx)
    yaxis.append(yaxis[i] * ay + by)
for j in range(0,lim):
    inx=j
    tim = 0
    cnt = 0
    x1=x
    y1=y
    for i in range(inx, -1, -1):
        tmp = abs(xaxis[i] - x) + abs(yaxis[i] - y)
        if tim + tmp > t:
            break
        x = xaxis[i]
        y = yaxis[i]
        tim += tmp
        cnt += 1

    for i in range(inx + 1, lim):
        tmp = abs(xaxis[i] - x) + abs(yaxis[i] - y)
        if tim + tmp > t:
            break
        x = xaxis[i]
        y = yaxis[i]
        tim += tmp
        cnt += 1
    x=x1
    y=y1
    ans=max(ans,cnt)

print(ans)

C++ Code:

#pragma GCC optimize("Ofast")

#include <bits/stdc++.h>
using namespace std;

#define endl '\n'

long long x0, y0, ax, ay, bx, by, xs, ys, t;

void Input() {
  cin >> x0 >> y0 >> ax >> ay >> bx >> by;
  cin >> xs >> ys >> t;
}

void Solve() {
  vector<long long> x(1, x0), y(1, y0);
  long long LIMIT = (1LL << 62) - 1;
  while ((LIMIT - bx) / ax >= x.back() && (LIMIT - by) / ay >= y.back()) {
    x.push_back(ax * x.back() + bx);
    y.push_back(ay * y.back() + by);
  }

  int n = x.size();
  int ans = 0;
  for (int i = 0; i < n; i++) {
    for (int j = i; j < n; j++) {
      long long length = x[j] - x[i] + y[j] - y[i];
      long long dist2Left = abs(xs - x[i]) + abs(ys - y[i]);
      long long dist2Right = abs(xs - x[j]) + abs(ys - y[j]);
      if (length <= t - dist2Left || length <= t - dist2Right)
        ans = max(ans, j - i + 1);
    }
  }

  cout << ans << endl;
}

int main(int argc, char *argv[]) {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  Input();
  Solve();
  return 0;
}


Comments

Submit
0 Comments
More Questions

550B - Preparing Olympiad
939B - Hamster Farm
732A - Buy a Shovel
1220C - Substring Game in the Lesson
452A - Eevee
1647B - Madoka and the Elegant Gift
1408A - Circle Coloring
766B - Mahmoud and a Triangle
1618C - Paint the Array
469A - I Wanna Be the Guy
1294A - Collecting Coins
1227A - Math Problem
349A - Cinema Line
47A - Triangular numbers
1516B - AGAGA XOOORRR
1515A - Phoenix and Gold
1515B - Phoenix and Puzzle
155A - I_love_username
49A - Sleuth
1541A - Pretty Permutations
1632C - Strange Test
673A - Bear and Game
276A - Lunch Rush
1205A - Almost Equal
1020B - Badge
1353A - Most Unstable Array
770A - New Password
1646B - Quality vs Quantity
80A - Panoramix's Prediction
1354B - Ternary String